package com.example.demo15.controller;

import com.example.demo15.entity.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import jakarta.servlet.http.HttpSession;

/**
 * 仪表盘控制器，处理与仪表盘相关的请求，如显示仪表盘和用户注销
 */
@Controller
@Slf4j
public class DashboardController {

    /**
     * 显示仪表盘页面
     * 处理GET请求：/dashboard
     *
     * @param model 用于向视图传递数据的模型
     * @param session HTTP会话对象，用于获取用户登录状态
     * @return 如果用户已登录返回仪表盘页面，否则重定向到登录页面
     */
    @GetMapping("/dashboard")
    public String showDashboard(Model model, HttpSession session) {
        // 检查用户是否已登录：通过检查会话中是否存在user属性
        if (session.getAttribute("user") == null) {
            return "redirect:/login"; // 如果未登录，重定向到登录页面
        }

        // 从会话中获取用户对象
        User user = (User) session.getAttribute("user");
        // 将用户名添加到模型中，供视图使用
        model.addAttribute("username", user.getUsername());

        return "/dashboard"; // 返回仪表盘页面模板名称
    }

    /**
     * 处理用户注销
     * 处理GET请求：/logout
     *
     * @param session HTTP会话对象，用于使当前会话失效
     * @return 注销后重定向到登录页面
     */
    @GetMapping("/logout")
    public String logout(HttpSession session) {
        session.invalidate(); // 使当前会话失效，清除所有会话属性

        return "redirect:/login"; // 重定向到登录页面
    }
}
